/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package org.hl7.v3;

import org.eclipse.emf.ecore.util.FeatureMap;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>ED</b></em>'.
 * <!-- end-user-doc -->
 *
 * <!-- begin-model-doc -->
 * 
 *             Data that is primarily intended for human interpretation
 *             or for further machine processing is outside the scope of
 *             HL7. This includes unformatted or formatted written language,
 *             multimedia data, or structured information as defined by a
 *             different standard (e.g., XML-signatures.)  Instead of the
 *             data itself, an ED may contain 
 *             only a reference (see TEL.) Note
 *             that the ST data type is a
 *             specialization of 
 *             when the  is text/plain.
 *          
 * <!-- end-model-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link org.hl7.v3.ED#getMixed <em>Mixed</em>}</li>
 *   <li>{@link org.hl7.v3.ED#getReference <em>Reference</em>}</li>
 *   <li>{@link org.hl7.v3.ED#getThumbnail <em>Thumbnail</em>}</li>
 *   <li>{@link org.hl7.v3.ED#getCompression <em>Compression</em>}</li>
 *   <li>{@link org.hl7.v3.ED#getIntegrityCheck <em>Integrity Check</em>}</li>
 *   <li>{@link org.hl7.v3.ED#getIntegrityCheckAlgorithm <em>Integrity Check Algorithm</em>}</li>
 *   <li>{@link org.hl7.v3.ED#getLanguage <em>Language</em>}</li>
 *   <li>{@link org.hl7.v3.ED#getMediaType <em>Media Type</em>}</li>
 * </ul>
 * </p>
 *
 * @see org.hl7.v3.V3Package#getED()
 * @model extendedMetaData="name='ED' kind='mixed'"
 * @generated
 */
public interface ED extends BIN1 {
	/**
	 * Returns the value of the '<em><b>Mixed</b></em>' attribute list.
	 * The list contents are of type {@link org.eclipse.emf.ecore.util.FeatureMap.Entry}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Mixed</em>' attribute list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Mixed</em>' attribute list.
	 * @see org.hl7.v3.V3Package#getED_Mixed()
	 * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true"
	 *        extendedMetaData="kind='elementWildcard' name=':mixed'"
	 * @generated
	 */
	FeatureMap getMixed();

	/**
	 * Returns the value of the '<em><b>Reference</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * 
	 *                         A telecommunication address (TEL), such as a URL
	 *                         for HTTP or FTP, which will resolve to precisely
	 *                         the same binary data that could as well have been
	 *                         provided as inline data.
	 *                      
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Reference</em>' containment reference.
	 * @see #setReference(TEL)
	 * @see org.hl7.v3.V3Package#getED_Reference()
	 * @model containment="true" transient="true" volatile="true" derived="true"
	 *        extendedMetaData="kind='element' name='reference' namespace='##targetNamespace'"
	 * @generated
	 */
	TEL getReference();

	/**
	 * Sets the value of the '{@link org.hl7.v3.ED#getReference <em>Reference</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Reference</em>' containment reference.
	 * @see #getReference()
	 * @generated
	 */
	void setReference(TEL value);

	/**
	 * Returns the value of the '<em><b>Thumbnail</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Thumbnail</em>' containment reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Thumbnail</em>' containment reference.
	 * @see #setThumbnail(Thumbnail)
	 * @see org.hl7.v3.V3Package#getED_Thumbnail()
	 * @model containment="true" transient="true" volatile="true" derived="true"
	 *        extendedMetaData="kind='element' name='thumbnail' namespace='##targetNamespace'"
	 * @generated
	 */
	Thumbnail getThumbnail();

	/**
	 * Sets the value of the '{@link org.hl7.v3.ED#getThumbnail <em>Thumbnail</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Thumbnail</em>' containment reference.
	 * @see #getThumbnail()
	 * @generated
	 */
	void setThumbnail(Thumbnail value);

	/**
	 * Returns the value of the '<em><b>Compression</b></em>' attribute.
	 * The default value is <code>"Z"</code>.
	 * The literals are from the enumeration {@link org.hl7.v3.CompressionAlgorithm}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * 
	 *                      Indicates whether the raw byte data is compressed,
	 *                      and what compression algorithm was used.
	 *                   
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Compression</em>' attribute.
	 * @see org.hl7.v3.CompressionAlgorithm
	 * @see #isSetCompression()
	 * @see #unsetCompression()
	 * @see #setCompression(CompressionAlgorithm)
	 * @see org.hl7.v3.V3Package#getED_Compression()
	 * @model default="Z" unsettable="true"
	 *        extendedMetaData="kind='attribute' name='compression'"
	 * @generated
	 */
	CompressionAlgorithm getCompression();

	/**
	 * Sets the value of the '{@link org.hl7.v3.ED#getCompression <em>Compression</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Compression</em>' attribute.
	 * @see org.hl7.v3.CompressionAlgorithm
	 * @see #isSetCompression()
	 * @see #unsetCompression()
	 * @see #getCompression()
	 * @generated
	 */
	void setCompression(CompressionAlgorithm value);

	/**
	 * Unsets the value of the '{@link org.hl7.v3.ED#getCompression <em>Compression</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isSetCompression()
	 * @see #getCompression()
	 * @see #setCompression(CompressionAlgorithm)
	 * @generated
	 */
	void unsetCompression();

	/**
	 * Returns whether the value of the '{@link org.hl7.v3.ED#getCompression <em>Compression</em>}' attribute is set.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return whether the value of the '<em>Compression</em>' attribute is set.
	 * @see #unsetCompression()
	 * @see #getCompression()
	 * @see #setCompression(CompressionAlgorithm)
	 * @generated
	 */
	boolean isSetCompression();

	/**
	 * Returns the value of the '<em><b>Integrity Check</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * 
	 *                      The integrity check is a short binary value representing
	 *                      a cryptographically strong checksum that is calculated
	 *                      over the binary data. The purpose of this property, when
	 *                      communicated with a reference is for anyone to validate
	 *                      later whether the reference still resolved to the same
	 *                      data that the reference resolved to when the encapsulated
	 *                      data value with reference was created.
	 *                   
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Integrity Check</em>' attribute.
	 * @see #setIntegrityCheck(byte[])
	 * @see org.hl7.v3.V3Package#getED_IntegrityCheck()
	 * @model dataType="org.hl7.v3.Bin"
	 *        extendedMetaData="kind='attribute' name='integrityCheck'"
	 * @generated
	 */
	byte[] getIntegrityCheck();

	/**
	 * Sets the value of the '{@link org.hl7.v3.ED#getIntegrityCheck <em>Integrity Check</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Integrity Check</em>' attribute.
	 * @see #getIntegrityCheck()
	 * @generated
	 */
	void setIntegrityCheck(byte[] value);

	/**
	 * Returns the value of the '<em><b>Integrity Check Algorithm</b></em>' attribute.
	 * The default value is <code>"SHA-1"</code>.
	 * The literals are from the enumeration {@link org.hl7.v3.IntegrityCheckAlgorithm}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * 
	 *                      Specifies the algorithm used to compute the
	 *                      integrityCheck value.
	 *                   
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Integrity Check Algorithm</em>' attribute.
	 * @see org.hl7.v3.IntegrityCheckAlgorithm
	 * @see #isSetIntegrityCheckAlgorithm()
	 * @see #unsetIntegrityCheckAlgorithm()
	 * @see #setIntegrityCheckAlgorithm(IntegrityCheckAlgorithm)
	 * @see org.hl7.v3.V3Package#getED_IntegrityCheckAlgorithm()
	 * @model default="SHA-1" unsettable="true"
	 *        extendedMetaData="kind='attribute' name='integrityCheckAlgorithm'"
	 * @generated
	 */
	IntegrityCheckAlgorithm getIntegrityCheckAlgorithm();

	/**
	 * Sets the value of the '{@link org.hl7.v3.ED#getIntegrityCheckAlgorithm <em>Integrity Check Algorithm</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Integrity Check Algorithm</em>' attribute.
	 * @see org.hl7.v3.IntegrityCheckAlgorithm
	 * @see #isSetIntegrityCheckAlgorithm()
	 * @see #unsetIntegrityCheckAlgorithm()
	 * @see #getIntegrityCheckAlgorithm()
	 * @generated
	 */
	void setIntegrityCheckAlgorithm(IntegrityCheckAlgorithm value);

	/**
	 * Unsets the value of the '{@link org.hl7.v3.ED#getIntegrityCheckAlgorithm <em>Integrity Check Algorithm</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isSetIntegrityCheckAlgorithm()
	 * @see #getIntegrityCheckAlgorithm()
	 * @see #setIntegrityCheckAlgorithm(IntegrityCheckAlgorithm)
	 * @generated
	 */
	void unsetIntegrityCheckAlgorithm();

	/**
	 * Returns whether the value of the '{@link org.hl7.v3.ED#getIntegrityCheckAlgorithm <em>Integrity Check Algorithm</em>}' attribute is set.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return whether the value of the '<em>Integrity Check Algorithm</em>' attribute is set.
	 * @see #unsetIntegrityCheckAlgorithm()
	 * @see #getIntegrityCheckAlgorithm()
	 * @see #setIntegrityCheckAlgorithm(IntegrityCheckAlgorithm)
	 * @generated
	 */
	boolean isSetIntegrityCheckAlgorithm();

	/**
	 * Returns the value of the '<em><b>Language</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * 
	 *                      For character based information the language property
	 *                      specifies the human language of the text.
	 *                   
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Language</em>' attribute.
	 * @see #setLanguage(String)
	 * @see org.hl7.v3.V3Package#getED_Language()
	 * @model dataType="org.hl7.v3.Cs"
	 *        extendedMetaData="kind='attribute' name='language'"
	 * @generated
	 */
	String getLanguage();

	/**
	 * Sets the value of the '{@link org.hl7.v3.ED#getLanguage <em>Language</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Language</em>' attribute.
	 * @see #getLanguage()
	 * @generated
	 */
	void setLanguage(String value);

	/**
	 * Returns the value of the '<em><b>Media Type</b></em>' attribute.
	 * The default value is <code>"text/plain"</code>.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * 
	 *                      Identifies the type of the encapsulated data and
	 *                      identifies a method to interpret or render the data.
	 *                   
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Media Type</em>' attribute.
	 * @see #isSetMediaType()
	 * @see #unsetMediaType()
	 * @see #setMediaType(String)
	 * @see org.hl7.v3.V3Package#getED_MediaType()
	 * @model default="text/plain" unsettable="true" dataType="org.hl7.v3.Cs"
	 *        extendedMetaData="kind='attribute' name='mediaType'"
	 * @generated
	 */
	String getMediaType();

	/**
	 * Sets the value of the '{@link org.hl7.v3.ED#getMediaType <em>Media Type</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Media Type</em>' attribute.
	 * @see #isSetMediaType()
	 * @see #unsetMediaType()
	 * @see #getMediaType()
	 * @generated
	 */
	void setMediaType(String value);

	/**
	 * Unsets the value of the '{@link org.hl7.v3.ED#getMediaType <em>Media Type</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isSetMediaType()
	 * @see #getMediaType()
	 * @see #setMediaType(String)
	 * @generated
	 */
	void unsetMediaType();

	/**
	 * Returns whether the value of the '{@link org.hl7.v3.ED#getMediaType <em>Media Type</em>}' attribute is set.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return whether the value of the '<em>Media Type</em>' attribute is set.
	 * @see #unsetMediaType()
	 * @see #getMediaType()
	 * @see #setMediaType(String)
	 * @generated
	 */
	boolean isSetMediaType();

} // ED
